#include <bits/stdc++.h>
using namespace std;
struct Cow {
  int a, b;
};
Cow cow[10];
int mem[10]; // 记下从根到叶子一路搜索的 路径的值。
bool v[10];  // 记下是否搜过
int n;

int ans = INT_MAX;

// 计算这种排列的情况下，需要的牛棚数
int check() {
  /*
   for (int i = 1; i <= n; i++) {
    cout << mem[i] << " ";
    }
  */
  int len = n;
  for (int i = 2; i <= n; i++) {
    // 这里需要注意，容易错
    int left = mem[i - 1];
    int right = mem[i];
    len += max(cow[left].b, cow[right].a);
  }
  return len;
}
// deep first search
void dfs(int depth) {
  if (depth > n) {
    ans = min(ans, check()); // 打擂台
    return;
  }
  for (int i = 1; i <= n; i++) {
    if (v[i])
      continue;
    mem[depth] = i;
    v[i] = true;
    dfs(depth + 1);
    // 以下是恢复现场
    v[i] = false;
    mem[depth] = 0;
  }
}
int main() {

  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> cow[i].a;
  }
  for (int i = 1; i <= n; i++) {
    cin >> cow[i].b;
  }
  dfs(1);
  cout << ans;
  return 0;
}